const Koa = require('koa');
const app = new Koa();

app.use(async (ctx, next) => {
  // console.log(1)
  await next()
  // console.log(5)
});


app.use(async (ctx, next) => {
  // console.log(2)
  await next();
  // console.log(4)
});


app.use(async ctx => {
  // console.log(3)
  ctx.body = 'Hello World';
});

app.listen(3000);
// 执行结果 1 2 3 4 5
// koa中间件 遇见 await next 方法，执行停住，执行权交给下一个中间件；
// 当下一个中间件执行完毕后，还有下一个中间件，继续向下交执行控制权；
// 如果没有下一个中间件了在返回当前中间件的上一个执行 await next 下面的代码，一直到最上面的中间件执行完毕
// 中间件按照顺序调用顺序执行